/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controller;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import model.bean.BeanArchivo;
import model.bean.BeanComentario;
import model.bean.BeanCurso;
import model.bean.BeanProfesor;
import model.bean.BeanUsuario;
import model.dao.DaoArchivo;
import model.dao.DaoComentario;
import model.dao.DaoCurso;
import model.dao.DaoProfesor;
import model.dao.DaoSuscripcion;
import model.dao.DaoValoracion;


/**
 *
 * @author Jesus
 */
@WebServlet(name = "ServletArchivo", urlPatterns = {"/ServletArchivo"})
public class ServletArchivo extends HttpServlet {

    /**
     * Processes requests for both HTTP
     * <code>GET</code> and
     * <code>POST</code> methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
     protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
//Para evitar problemas con los caracteres especiales (tildes,ñ)
        request.setCharacterEncoding("UTF-8");

        //Obtenemos la ACCIÓN solicitada al Servlet
        String action = request.getParameter("action");
        BeanUsuario beanusuario = (BeanUsuario) request.getSession().getAttribute("usuario");

        //ACCION View All (Listar todos los archivos)
    if (action.equals("searchfile")) {
            DaoArchivo daoarchivo = new DaoArchivo();
            ArrayList<BeanArchivo> listaArchivos = new ArrayList<BeanArchivo>();
            
            String nombre= request.getParameter("nombre");
//            String codigocurso= request.getParameter("codigocurso");
//            String nombrecurso= request.getParameter("nombrecurso");
           
            
            listaArchivos = daoarchivo.buscar(nombre);
            
//           for (BeanArchivo beanArchivo : listaArchivos) {
//               System.out.println(beanArchivo.getCodigo());
//            }
    
//            System.out.println(listaArchivos.size());
            
            request.setAttribute("listaArchivos", listaArchivos);
            
            RequestDispatcher rd =
                    getServletContext().getRequestDispatcher("/view/user/archivo/viewall.jsp");
            rd.forward(request, response);
        }
        
        
         if (action.equals("viewalladmin")) {
            DaoArchivo daoarchivo = new DaoArchivo();
            ArrayList<BeanArchivo> listaArchivos = new ArrayList<BeanArchivo>();
            listaArchivos = daoarchivo.lista() ;
            request.setAttribute("listaArchivos", listaArchivos);
            RequestDispatcher rd =
                    getServletContext().getRequestDispatcher("/view/admin/archivo/adminfiles.jsp");
            rd.forward(request, response);
        }
         if (action.equals("viewall_0")) {
            DaoArchivo daoarchivo = new DaoArchivo();
            ArrayList<BeanArchivo> listaArchivos = new ArrayList<BeanArchivo>();
            listaArchivos = daoarchivo.lista0() ;
            request.setAttribute("listaArchivos", listaArchivos);
            RequestDispatcher rd =
                    getServletContext().getRequestDispatcher("/view/admin/archivo/adminfiles0.jsp");
            rd.forward(request, response);
        }
            if (action.equals("viewall_0mod")) {
            DaoArchivo daoarchivo = new DaoArchivo();
            ArrayList<BeanArchivo> listaArchivos = new ArrayList<BeanArchivo>();
            listaArchivos = daoarchivo.lista0() ;
            request.setAttribute("listaArchivos", listaArchivos);
            RequestDispatcher rd =
                    getServletContext().getRequestDispatcher("/view/moderador/archivo/modefiles0.jsp");
            rd.forward(request, response);
        }
        if (action.equals("viewalluser")) {
            DaoArchivo daoarchivo = new DaoArchivo();
            ArrayList<BeanArchivo> listaArchivos = new ArrayList<BeanArchivo>();
            listaArchivos = daoarchivo.lista() ;
            request.setAttribute("listaArchivos", listaArchivos);
            RequestDispatcher rd =
                    getServletContext().getRequestDispatcher("/view/user/archivo/viewall.jsp");
            rd.forward(request, response);
        }
        
        if (action.equals("viewallmode")) {
            DaoArchivo daoarchivo = new DaoArchivo();
            ArrayList<BeanArchivo> listaArchivos = new ArrayList<BeanArchivo>();
            listaArchivos = daoarchivo.lista() ;
            request.setAttribute("listaArchivos", listaArchivos);
            RequestDispatcher rd =
                    getServletContext().getRequestDispatcher("/view/moderador/archivo/modefiles.jsp");
            rd.forward(request, response);
        }
        
        if (action.equals("updatefile")) {
            DaoArchivo daoarchivo = new DaoArchivo();
            daoarchivo.Update(Integer.parseInt(request.getParameter("id")));
            response.sendRedirect("ServletArchivo?action=viewall_0");
        }
     
      if (action.equals("deletefile0")) {
            DaoArchivo daoarchivo = new DaoArchivo();
            daoarchivo.Update0(Integer.parseInt(request.getParameter("id")));
            response.sendRedirect("ServletArchivo?action=viewall_0");
        }
     if (action.equals("deletefile1")) {
            DaoArchivo daoarchivo = new DaoArchivo();
            daoarchivo.Update0(Integer.parseInt(request.getParameter("id")));
            response.sendRedirect("ServletArchivo?action=viewalladmin");
        }
      if (action.equals("viewdownload")) {
            DaoArchivo daoarchivo = new DaoArchivo();
            BeanArchivo beanarchivo = new BeanArchivo();
            int idarchivo = Integer.valueOf(request.getParameter("id")); 
            beanarchivo = daoarchivo.get(idarchivo);
            //listaArchivos = daoarchivo.lista_descargas(Integer.parseInt(request.getParameter("id"))); ;
            
            request.setAttribute("beanarchivo", beanarchivo);
            
            RequestDispatcher rd =
                    getServletContext().getRequestDispatcher("/view/admin/archivo/viewfile.jsp");
            rd.forward(request, response);
        }
      if (action.equals("updatefilemod")) {
            DaoArchivo daoarchivo = new DaoArchivo();
            daoarchivo.Update0(Integer.parseInt(request.getParameter("id")));
            response.sendRedirect("ServletArchivo?action=viewall_0mod");
        }
     
      if (action.equals("deletefile0mod")) {
            DaoArchivo daoarchivo = new DaoArchivo();
            daoarchivo.Update0(Integer.parseInt(request.getParameter("id")));
            response.sendRedirect("ServletArchivo?action=viewall_0mod");
        }
     if (action.equals("deletefile1mod")) {
            DaoArchivo daoarchivo = new DaoArchivo();
            daoarchivo.Update(Integer.parseInt(request.getParameter("id")));
            response.sendRedirect("ServletArchivo?action=viewallmode");
        }
      if (action.equals("viewdownloadmod")) {
            DaoArchivo daoarchivo = new DaoArchivo();
            BeanArchivo beanarchivo = new BeanArchivo();
            int idarchivo = Integer.valueOf(request.getParameter("id")); 
            beanarchivo = daoarchivo.get(idarchivo);
            //listaArchivos = daoarchivo.lista_descargas(Integer.parseInt(request.getParameter("id"))); ;
            
            request.setAttribute("beanarchivo", beanarchivo);
            
            RequestDispatcher rd =
                    getServletContext().getRequestDispatcher("/view/moderador/archivo/viewfile.jsp");
            rd.forward(request, response);
        }
      
      if (action.equals("viewdownloaduser")) {
            DaoArchivo daoarchivo = new DaoArchivo();
            DaoComentario daoComentario = new DaoComentario();
            BeanArchivo beanarchivo = new BeanArchivo();
            int idarchivo = Integer.valueOf(request.getParameter("id")); 
            beanarchivo = daoarchivo.get(idarchivo);
            DaoValoracion daoValoracion = new DaoValoracion();
            //listaArchivos = daoarchivo.lista_descargas(Integer.parseInt(request.getParameter("id"))); ;
            
            request.setAttribute("beanarchivo", beanarchivo);
            request.setAttribute("listcomentarios", daoComentario.lista(idarchivo));
            request.getSession().setAttribute("prom", daoValoracion.get(idarchivo).toString());
            
            RequestDispatcher rd =
                    getServletContext().getRequestDispatcher("/view/user/archivo/viewfile.jsp");
            rd.forward(request, response);
        }
      
      

       if (action.equals("viewfileuser")) {
            DaoArchivo daoarchivo = new DaoArchivo();
             
            int idarchivo = Integer.valueOf(request.getParameter("id")); 
            BeanArchivo beanarchivo = daoarchivo.get(idarchivo);
            DaoSuscripcion daoSuscripcion = new DaoSuscripcion();
            //listaArchivos = daoarchivo.lista_descargas(Integer.parseInt(request.getParameter("id"))); ;
            
            request.setAttribute("beanarchivo", beanarchivo);
            request.setAttribute("usuario", beanusuario);
            request.getSession().setAttribute("listusuarioxcurso", daoSuscripcion.listusuarioxcurso(beanusuario));
            
            RequestDispatcher rd =
                    getServletContext().getRequestDispatcher("/view/user/archivo/viewfile.jsp");
            rd.forward(request, response);
        }

        
        
     }
  
        
//        //ACCION Delete (Elimina un registro)
//        if (action.equals("delete")) {
//            DaoCurso daocurso = new DaoCurso();
//            daocurso.delete(Integer.parseInt(request.getParameter("id")));
//            response.sendRedirect("ServletCurso?action=viewall");
//        }
//        
//        
//        if (action.equals("search")) {
//            DaoCurso daocurso = new DaoCurso();
//            ArrayList<BeanCurso> listaCursos = new ArrayList<BeanCurso>();
//            
//            String idciclo= request.getParameter("idciclo");
//            String codigocurso= request.getParameter("codigocurso");
//            String nombrecurso= request.getParameter("nombrecurso");
//           
//            
//            listaCursos = daocurso.buscar(idciclo, codigocurso, nombrecurso);
//            
//           for (BeanCurso beanCurso : listaCursos) {
//               System.out.println(beanCurso.getCodigo());
//            }
//    
//            System.out.println(listaCursos.size());
//            
//            request.setAttribute("listaCursos", listaCursos);
//            RequestDispatcher rd =
//                    getServletContext().getRequestDispatcher("/view/admin/curso/viewall.jsp");
//            rd.forward(request, response);
//        }
//        
//         if (action.equals("searchuser")) {
//            DaoCurso daocurso = new DaoCurso();
//            ArrayList<BeanCurso> listaCursos = new ArrayList<BeanCurso>();
//            
//            String idciclo= request.getParameter("idciclo");
//            String codigocurso= request.getParameter("codigocurso");
//            String nombrecurso= request.getParameter("nombrecurso");
//           
//            
//            listaCursos = daocurso.buscar(idciclo, codigocurso, nombrecurso);
//            
//           for (BeanCurso beanCurso : listaCursos) {
//               System.out.println(beanCurso.getCodigo());
//            }
//    
//            System.out.println(listaCursos.size());
//            
//            request.setAttribute("listaCursos", listaCursos);
//            RequestDispatcher rd =
//                    getServletContext().getRequestDispatcher("/view/user/curso/viewall.jsp");
//            rd.forward(request, response);
//        }
//    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP
     * <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP
     * <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}
